Large-scale, network-based computing represents a paradigm shift from traditional client-server computing relationships. With large-scale, network-based service provider environments (e.g., data centers), customers are able to leverage shared resources on-demand by renting resources that are owned by third parties and that reside “in the cloud.” With these resources, users of the network-based service provider environment are able to launch and maintain large applications, or computer resources, without actually owning or servicing the underlying infrastructure necessary for these applications.
In order to use a network-based service provider environment, a user or customer typically instantiates a virtual machine or accesses a network-based service, (also referred to herein as a “computer resources”). One example of such a computer resource is a virtual machine (also referred to herein as “virtual machine instances”). Each computer resource is a software implementation of a computing system that executes programs like a physical computer system and is configured to run an operating system and execute customer-installed programs or applications.
Because customers with diverse needs may create and/or use computer resources of varying characteristics, such as types (i.e., computer resource capabilities) and configurations (e.g., operating system version, security, network access, etc.), customers may experience different levels of service. Furthermore, varying system states of the network-based service provider environment creates even more variation in levels of service with respect to the time required to execute, and the performance of, network-based services.